#include <stdio.h>
#include <string.h>
#include <unistd.h>


int main()
{
    // C接口
    printf("hello printf\n");
    fprintf(stdout,"hello fprintf\n");
    const char *fputsString = "hello fputs\n";
    fputs(fputsString,stdout);

    // 系统接口
    const char *wstring = "hello write\n";
    write(1,wstring,strlen(wstring));

    // 在代码结束之前，进行创建子进程
    // 1.如果我们没有进行 > ,看到了4条信息
    // stdout 默认使用的是行刷新，在进程fork之前，三条C函数已经将数据进行打印输出到显示器上(外设)，你的FILE内部，进程内部不存在对应的数据了
    // 2.如果我们进行了 > ，写入文件不再是显示器，而是普通文件，采用的刷新策略是全缓冲，之前的3条C显示函数，虽然带了\n,但是不足以stdout缓冲区写满！数据并没有被刷新！！！
    // 执行fork的时候，stdout属于父进程，创建子进程的时候，紧接着就是进程退出！谁先退出，一定要进行缓冲区刷新(就是修改)
    // 写时拷贝！！数据最终会显示两份
    // 3.write为什么没有呢？上面的过程都和write无关，write没有FILE，就没有C提供的缓冲区
    fork();
    return 0;
}
